package org.fhawk.tinyspring.orm;


import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * Created by tuo on 9/30/16.
 */
public interface Mapper<T> {
    /**
     * insert、update
     *
     * @param t 实例
     * @return 处理行数
     */
    int update(T t) throws SQLException;

    /**
     * 增删改
     *
     * @param sql    语句
     * @param params 参数
     * @return 返回值
     * @throws SQLException
     */
    int execute(String sql, Object... params) throws SQLException;

    /**
     * @param id
     * @return
     */
    int delete(Serializable id) throws SQLException;

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    T get(Serializable id) throws SQLException, ReflectiveOperationException;

    /**
     * 根据条件查询
     *
     * @param t
     * @return
     */
    List<T> find(T t) throws SQLException;

    /**
     * 查询所有
     *
     * @return
     */
    List<T> findAll() throws SQLException;

    /**
     * 查询返回map
     *
     * @param sql
     * @param params
     * @return
     */
    Map<String, Object> findToMap(String sql, Object... params) throws SQLException;

    /**
     * 查询返回list
     *
     * @param sql
     * @param params
     * @return
     */
    List<Map<String, Object>> findToList(String sql, Object... params) throws SQLException;

}
